SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROC [dbo].[SP_TASALD_CORP_Q06]
/*---------------------------------------------------------------------*/
/*----- Empresa          : OFISIS S.A.                            -----*/
/*----- Cliente          : OFISIS S.A.                         	  -----*/
/*----- Sistema          : Contabilidad                           -----*/
/*----- Modulo           : Empresa                                -----*/
/*----- Programa         : Balance de Comprobacion Acumulado Corporativo-----*/
/*----- Nombre           : SP_TASALD_EMPR_Q06                	  -----*/
/*----- Script           : TASALD_CORP                     -----*/
/*----- Desarrollado     : Franco Gamboni Koifman                 -----*/
/*----- Fecha            : 23/06/1997                             -----*/
/*----- Base de Datos    : MS SQL Server                          -----*/
/*----- Version BD       : 6.5                                    -----*/
/*----- Invoca a SP      :                                        -----*/
/*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------*/
/*----- MODIFICADO POR   : PERCY GARCIA                           -----*/
/*----- FECHA MODIF      : 06/12/2004                             -----*/
/*----- DETALLE MODIF    : SE AUMENTO FILTROS PARA VISUALIZAR FILAS CON MONTOS -----*/
/*----- SE AUMENTO JOIN POR A?O                                   -----*/
/*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------*/
/*----- Drop Proc SP_TASALD_CORP_Q06                              -----*/
/*----- Grant Execute On SP_TASALD_CORP_Q06 To PUBLIC             -----*/
/*----- SP_TASALD_CORP_Q06 1999, 12, 2, 'U'            	  -----*/
/*---------------------------------------------------------------------*/
                                                                                                                                                          
/*--------------------------------------------------------------------------*/

@INNU_ANNO		TD_IN_004_ANNO,                                                                                                                                
@INNU_MESE		TD_IN_002_MESE,                                                                                                                                
@INNU_DGTO		TD_IN_001,
@ISTI_PRES		TD_VC_001,               
@ISFL_MONT       	TD_VC_001               
                                                                                             
As

Create Table #TWSALD_CORP_Q06_1
(CO_CNTA_CORP Char(10) NULL,
 DE_CNTA_CORP Char(50) NULL,
 SALD_ANT     Numeric(16,4)   NULL,
 DEBE_MES     Numeric(16,4)    NULL,                                                                                                                              
 HABER_MES    Numeric(16,4)    NULL,                                                                                                     
 SALD_DEBE    Numeric(16,4)    NULL,                                                                                                     
 SALD_HABER   Numeric(16,4)    NULL,                                                                                                     
 ACTIVO       Numeric(16,4)    NULL,                                                                                                     
 PASIVO       Numeric(16,4)    NULL,                                                                                                                 
 PERDIDAS    Numeric(16,4)    NULL,                                                                                                                 
 GANANCIAS    Numeric(16,4)   NULL,                                                                                                                 
 PERDIDAFUN   Numeric(16,4)    NULL,                                             
 GANANCIAFUN  Numeric(16,4)    NULL )
Declare
@CSCO_CNTA		TD_VC_020_CNTA,
@CSNO_CNTA		TD_VC_050,
@VSCO_CNTA       	TD_VC_020_CNTA,
@CSCO_BALA	 	TD_VC_003,
@VSCO_BALA	 	TD_VC_002,
@CNIM_SALD_ANTE   	TD_NU_016_004,
@VNIM_DEBE_MESE		TD_NU_016_004,
@VNIM_HABE_MESE		TD_NU_016_004,
@VNIM_SALD_DEBE  	TD_NU_016_004,
@VNIM_SALD_HABE 	TD_NU_016_004,
@VNTO_CALC    		TD_NU_016_004  If @INNU_DGTO != 0
 Begin
  Declare CU_TASALD_CORP_Q06_1 Cursor
  For                                                                             
   Select  T2.CO_CNTA_CORP, MAX(RTRIM(T2.DE_CNTA_CORP)),                                                        
   SUM(ROUND(ISNULL(T1.IM_CARG_MESE,0),2)) - SUM(ROUND(ISNULL(T1.IM_ABON_MESE,0),2)), T2.CO_BALA                       
   From TMPLAN_CORP T2                                                                      
     LEFT OUTER JOIN TASALD_CORP T1
     ON T1.NU_ANNO	= @INNU_ANNO 
     And T1.NU_MESE < @INNU_MESE 
	 And T1.CO_CNTA_CORP = T2.CO_CNTA_CORP 
	 And T1.TI_AUXI_CORP IS NULL 
     And T1.CO_AUXI_CORP IS NULL 
   Where DATALENGTH(RTRIM(T2.CO_CNTA_CORP)) = @INNU_DGTO 
   Group By T2.CO_CNTA_CORP, T2.CO_BALA
 End

If @INNU_DGTO = 0
 Begin
  Declare CU_TASALD_CORP_Q06_1 Cursor
  For                                                                             
   Select  T2.CO_CNTA_CORP, MAX(RTRIM(T2.DE_CNTA_CORP)),
   ISNULL(SUM(ROUND(ISNULL(T1.IM_CARG_MESE,0),2)), 0) - ISNULL(SUM(ROUND(ISNULL(T1.IM_ABON_MESE,0),2)), 0), T2.CO_BALA                       
   From TMPLAN_CORP T2 
     LEFT OUTER JOIN TASALD_CORP T1
     ON T1.NU_ANNO	= @INNU_ANNO 
	 And T1.NU_MESE	< @INNU_MESE 
	 And T1.CO_CNTA_CORP = T2.CO_CNTA_CORP 
	 And T1.TI_AUXI_CORP IS NULL 
	 And T1.CO_AUXI_CORP IS NULL 
   Group By T2.CO_CNTA_CORP, T2.CO_BALA
   Order By T2.CO_CNTA_CORP, T2.CO_BALA
 End
                                                                                                                            
Open CU_TASALD_CORP_Q06_1
Fetch CU_TASALD_CORP_Q06_1 Into @CSCO_CNTA, @CSNO_CNTA, @CNIM_SALD_ANTE, @CSCO_BALA
                                                                                                                
While @@Fetch_status = 0
Begin

Select @VNIM_DEBE_MESE = 0                          
Select @VNIM_HABE_MESE = 0

Select @VNIM_DEBE_MESE  = ISNULL(SUM(ROUND(ISNULL(T1.IM_CARG_MESE, 0),2)),0),                                                                                            
@VNIM_HABE_MESE = ISNULL(SUM(ROUND(ISNULL(T1.IM_ABON_MESE, 0),2)),0)                                                                                                     
From  TASALD_CORP T1, TMPLAN_CORP T2                                                                                                                
Where T1.NU_ANNO	 = @INNU_ANNO	      And                                                                                                                  
T1.NU_MESE	 = @INNU_MESE        And                                                                                                                 
T1.CO_CNTA_CORP = RTRIM(@CSCO_CNTA) And                                                                                                                 
T1.TI_AUXI_CORP IS NULL           And
T1.CO_AUXI_CORP IS NULL and
T1.CO_CNTA_CORP = T2.CO_CNTA_CORP                                            
Group By T1.CO_CNTA_CORP
                                                                                                         
If @VNIM_DEBE_MESE IS NULL
Select @VNIM_DEBE_MESE = 0
If @VNIM_HABE_MESE IS NULL
Select @VNIM_HABE_MESE = 0
Select @VNTO_CALC = (ROUND(@CNIM_SALD_ANTE,2) + ROUND(@VNIM_DEBE_MESE,2)) - ROUND(@VNIM_HABE_MESE,2) /*------------------------GANANCIAS-----------------------------------*/
                                                                                                                                                                                     
If @VNTO_CALC >= 0
Begin
                                                
Select @VSCO_CNTA = SUBSTRING(@CSCO_CNTA,1,2)

Select @VSCO_BALA = SUBSTRING(@CSCO_BALA,1,2)

/*-- CuentAs de Inventario --*/
                
If @VSCO_CNTA <'60'
                                                                                                                                                                                                              
Begin
Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP, DE_CNTA_CORP, SALD_ANT,                                                                                                                                                                                               
 
    
DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER, ACTIVO,                                                                                                                                                                                                           
PASIVO, PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN )                                                                                                                                                                                                       
Values (RTRIM(@CSCO_CNTA), RTRIM(@CSNO_CNTA), @CNIM_SALD_ANTE, @VNIM_DEBE_MESE,                                                                                                                                                                              
@VNIM_HABE_MESE,@VNTO_CALC, 0, @VNTO_CALC, 0, 0, 0, 0, 0 )
                                                                                                                                                                                                   
End
                                    
                                                                                                                                                                                                                       
Else
                                
/*-- Ganancia y Perdida por Naturaleza --*/
--If @VSCO_CNTA = '60' OR @VSCO_CNTA = '61' OR 
-- @VSCO_CNTA = '62' OR @VSCO_CNTA = '63' OR @VSCO_CNTA = '64'                                                                                                                                                      --OR @VSCO_CNTA = '65' OR @VSCO_CNTA = '67'

-- OR 
-- @VSCO_CNTA = '68' OR @VSCO_CNTA = '71' OR @VSCO_CNTA = '72' 
If @VSCO_BALA = '10'
Begin                                                                                                                                                                                                               
 Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP,DE_CNTA_CORP,SALD_ANT,                                                                                                                                                                                                 

     
        DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER, ACTIVO,                                                                                                                                                                                                     

      
        PASIVO, PERDIDAS,GANANCIAS, PERDIDAFUN, GANANCIAFUN )                                                                                                                                            
      
 Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE,@VNIM_DEBE_MESE,                                                                                                                                                                                 
 

        @VNIM_HABE_MESE,@VNTO_CALC, 0, 0, 0, @VNTO_CALC, 0, 0, 0)
End
                                                                                                                                                                                                                         
Else
                                                                                                                                                                                                                            
/*-- Ganancia y Perdida por Naturaleza/Funcion --*/
                                                                                                                                                                                                          
--If @VSCO_CNTA = '66' or @VSCO_CNTA = '70'OR @VSCO_CNTA = '73' OR @VSCO_CNTA = '74' OR @VSCO_CNTA = '75'                                                                                                                                                      


--OR @VSCO_CNTA = '76' OR @VSCO_CNTA = '77' OR  @VSCO_CNTA = '78' 
If @VSCO_BALA = '11'
 Begin 
  Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP,DE_CNTA_CORP,SALD_ANT,                                                                                                                                                                                                

      
         DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER, ACTIVO,                                                                                                                                                                                                    

       
         PASIVO, PERDIDAS,GANANCIAS,  
         PERDIDAFUN, GANANCIAFUN )                                                                                                                                                                                                        
  Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE,@VNIM_DEBE_MESE,                                                                                                                                                                                 


         @VNIM_HABE_MESE,@VNTO_CALC, 0, 0, 0, @VNTO_CALC, 0, @VNTO_CALC, 0)
End
                    
                                                                                                                                                                                                                                       
Else
                
                                                                                                                                                                                                                                          
/*-- Ganancia y Perdida por Funcion --*/
                                                                                                                                                                                                                     
--If   @VSCO_CNTA = '69'  Or @VSCO_CNTA >= '90' 
If @VSCO_BALA = '01'                                                                                                                                                                                                               
 Begin             
  Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP,DE_CNTA_CORP,SALD_ANT,                   
      
         DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER, ACTIVO,                                                                                                                                                                                                   
 
       
         PASIVO, PERDIDAS, 
         GANANCIAS, PERDIDAFUN, GANANCIAFUN )                                                                                                                     
  Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE,@VNIM_DEBE_MESE,                                                                                                                                                                                 

 
         @VNIM_HABE_MESE,@VNTO_CALC, 0, 0, 0, 0, 0, @VNTO_CALC, 0)
End
         
                                                                                                                                                                                                                                                  
Else
Begin
                                                                                                                                                                                                                                            
Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP, DE_CNTA_CORP, SALD_ANT,                                                                                                                                                                                                

    
DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER, ACTIVO,                                                                                                                                                                                                           
PASIVO, PERDIDAS, 
 GANANCIAS, PERDIDAFUN, GANANCIAFUN)                                                                                                                                                                                                        
Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE, @VNIM_DEBE_MESE, 
@VNIM_HABE_MESE, @VNTO_CALC, 0, 0, 0, 0, 0 ,0, 0)
                                                                                                                                                                                                            
End

End
      
/*---------------------------PERDIDAS---------------------------------------*/
                                                                                                                                                                               
If @VNTO_CALC < 0
                                                                                                                                                                                                                                            
Begin
 Select @VSCO_CNTA = SUBSTRING(@CSCO_CNTA,1,2)
 Select @VSCO_BALA = SUBSTRING(@CSCO_BALA,1,2)
 
/*-- CuentAs de Inventario --*/
                                                                                                                                                                                                                              
If @VSCO_CNTA <'60'
                                                                                                                                                                                                                                       
Begin
                                                                                                                                                                                                                                                               

 
Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP, DE_CNTA_CORP, SALD_ANT,                                                                                                                
   
 DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER, ACTIVO,                                                                                                                                                                                                           

 PASIVO, PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN )                                                                                                                                                                                                        


Values (RTRIM(@CSCO_CNTA), RTRIM(@CSNO_CNTA), @CNIM_SALD_ANTE, @VNIM_DEBE_MESE,                                                                                                                                                                              
@VNIM_HABE_MESE, 0 , Abs(@VNTO_CALC), 0, Abs(@VNTO_CALC), 0, 0, 0, 0 )
                                                                                                                                                                                    
End
       
Else
          
/*-- GANANCIAS y PERDIDAS por Naturaleza --*/
If @VSCO_BALA = '10'
 Begin 
  Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP,DE_CNTA_CORP,SALD_ANT,                                                                                                                                                                                     
         DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER,ACTIVO,                                                                                                                                                                                           
         PASIVO, PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN )                                                                                                                                                                                      
  Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE,@VNIM_DEBE_MESE,                                                                                                                                                                
        ( @VNIM_HABE_MESE ), 0, Abs(@VNTO_CALC),0, 0, 0, Abs(@VNTO_CALC),0, 0 )
End
                                                                             
/*-- GANANCIAS y PERDIDAS por Naturaleza/Funcion --*/
Else                                                                                                                                                                        
If @VSCO_BALA = '11'                                                                                                         
 Begin 
  Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP,DE_CNTA_CORP,SALD_ANT,
         DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER,ACTIVO, 
         PASIVO, PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN ) 
  Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE,@VNIM_DEBE_MESE,
         ( @VNIM_HABE_MESE ), 0, Abs(@VNTO_CALC),0, 0, 0, Abs(@VNTO_CALC),0, Abs(@VNTO_CALC) )
End
                                                                                                   
                                                                                                                                                        
Else
                                                                                               
                                                                                                                                                           
/*-- GANANCIAS y PERDIDAS por Funci=n --*/
If @VSCO_BALA = '01'
 Begin
  Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP,DE_CNTA_CORP,SALD_ANT,
         DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER,ACTIVO, 
         PASIVO, PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN ) 
  Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE,@VNIM_DEBE_MESE,
     ( @VNIM_HABE_MESE ), 0, Abs(@VNTO_CALC),0, 0, 0, 0,0, Abs(@VNTO_CALC) )
End
                                  
Else
Begin
Insert #TWSALD_CORP_Q06_1(CO_CNTA_CORP,DE_CNTA_CORP,SALD_ANT,
DEBE_MES,HABER_MES, SALD_DEBE, SALD_HABER,ACTIVO,
PASIVO,PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN) 
Values (RTRIM(@CSCO_CNTA),RTRIM(@CSNO_CNTA),@CNIM_SALD_ANTE,@VNIM_DEBE_MESE,
( @VNIM_HABE_MESE) , 0, Abs(@VNTO_CALC), 0,  
0, 0, 0, 0, 0 )
                                                                                                                                                                                                  
End
End
Fetch CU_TASALD_CORP_Q06_1 Into @CSCO_CNTA, @CSNO_CNTA, @CNIM_SALD_ANTE, @CSCO_BALA
End
Close CU_TASALD_CORP_Q06_1
Deallocate CU_TASALD_CORP_Q06_1

-- MUESTRA TODAS LAS FILAS 
If @ISFL_MONT = 'T' 
Begin 
If @ISTI_PRES = 'U' 
 Select CO_CNTA_CORP,DE_CNTA_CORP, SALD_ANT, DEBE_MES,
          HABER_MES, SALD_DEBE, SALD_HABER,
          ACTIVO, PASIVO, PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN
   From #TWSALD_CORP_Q06_1
 Order by CO_CNTA_CORP
Else If @ISTI_PRES = 'E'
   Select CO_CNTA_CORP,DE_CNTA_CORP, Round(SALD_ANT/1000,2), Round(DEBE_MES/1000,2),
          Round(HABER_MES/1000,2), Round(SALD_DEBE/1000,2), Round(SALD_HABER/1000,2),
          Round(ACTIVO/1000,2), Round(PASIVO/1000,2), Round(PERDIDAS/1000,2), 
          Round(GANANCIAS/1000,2), Round(PERDIDAFUN/1000,2), Round(GANANCIAFUN/1000,2)
   From #TWSALD_CORP_Q06_1
 Order by CO_CNTA_CORP
Else If @ISTI_PRES = 'O'
   Select CO_CNTA_CORP,DE_CNTA_CORP, Round(SALD_ANT/1000000,2), Round(DEBE_MES/1000000,2),
          Round(HABER_MES/1000000,2), Round(SALD_DEBE/1000000,2), Round(SALD_HABER/1000000,2),                                                                                                                                                                 

                                                  
          Round(ACTIVO/1000000,2), Round(PASIVO/1000000,2), Round(PERDIDAS/1000000,2), 
          Round(GANANCIAS/1000000,2), Round(PERDIDAFUN/1000000,2), Round(GANANCIAFUN/1000000,2)                                                                       
   From #TWSALD_CORP_Q06_1
 Order by CO_CNTA_CORP
End 

-- MUESTRA LAS FILAS CON MONTOS 
If @ISFL_MONT = 'M' 
Begin 
If @ISTI_PRES = 'U' 
 Select CO_CNTA_CORP,DE_CNTA_CORP, SALD_ANT, DEBE_MES,
 HABER_MES, SALD_DEBE, SALD_HABER,
 ACTIVO, PASIVO, PERDIDAS, GANANCIAS, PERDIDAFUN, GANANCIAFUN
 From #TWSALD_CORP_Q06_1
 Where Abs(SALD_ANT) > 0 Or Abs(DEBE_MES) > 0 Or Abs(HABER_MES) > 0 Or   
 Abs(SALD_DEBE) > 0 Or Abs(SALD_HABER) > 0 
 Order by CO_CNTA_CORP
Else If @ISTI_PRES = 'E'
 Select CO_CNTA_CORP,DE_CNTA_CORP, Round(SALD_ANT/1000,2), Round(DEBE_MES/1000,2),
 Round(HABER_MES/1000,2), Round(SALD_DEBE/1000,2), Round(SALD_HABER/1000,2),
 Round(ACTIVO/1000,2), Round(PASIVO/1000,2), Round(PERDIDAS/1000,2), 
 Round(GANANCIAS/1000,2), Round(PERDIDAFUN/1000,2), Round(GANANCIAFUN/1000,2)
 From #TWSALD_CORP_Q06_1
 Where Abs(SALD_ANT) > 0 Or Abs(DEBE_MES) > 0 Or Abs(HABER_MES) > 0 Or   
 Abs(SALD_DEBE) > 0 Or Abs(SALD_HABER) > 0 
 Order by CO_CNTA_CORP
Else If @ISTI_PRES = 'O'
 Select CO_CNTA_CORP,DE_CNTA_CORP, Round(SALD_ANT/1000000,2), Round(DEBE_MES/1000000,2),
 Round(HABER_MES/1000000,2), Round(SALD_DEBE/1000000,2), Round(SALD_HABER/1000000,2),                                                                                                                                                                
 Round(ACTIVO/1000000,2), Round(PASIVO/1000000,2), Round(PERDIDAS/1000000,2), 
 Round(GANANCIAS/1000000,2), Round(PERDIDAFUN/1000000,2), Round(GANANCIAFUN/1000000,2)                                                                       
 From #TWSALD_CORP_Q06_1
 Where Abs(SALD_ANT) > 0 Or Abs(DEBE_MES) > 0 Or Abs(HABER_MES) > 0 Or   
 Abs(SALD_DEBE) > 0 Or Abs(SALD_HABER) > 0 
 Order by CO_CNTA_CORP
End 

Return
/*----------------------------------- Fin --------------------------------------*/


GO
